The possible values for the <#2783#><TT>contact-state</TT><#2783#> of a shell
differ slightly from those of ordinary contacts. Because the parent of a
shell is always a <#2784#><TT>root</TT><#2784#>, a shell does not have a geometry manager
in the usual sense. Instead, a window manager client<A ID="2785"><tex2html_anchor_invisible_mark></A> will typically allow the user to define control the geometry
of shells and other top-level windows interactively. Shell states,
therefore, correspond to the top-level window states defined in
Mapping (or ``popping up'') a shell means setting its state to <#2796#><TT>:mapped</TT><#2796#>.<A ID="2797"><tex2html_anchor_invisible_mark></A> Unmapping
(or ``popping down'')<A ID="2798"><tex2html_anchor_invisible_mark></A> a shell means setting
its state to <#2799#><TT>:iconic</TT><#2799#> or <#2800#><TT>:withdrawn</TT><#2800#>.
Mapping a shell causes its <#2801#><TT>:map</TT><#2801#> callback to be invoked.
Similarly, unmapping a shell invokes its <#2802#><TT>:unmap</TT><#2802#> callback. These
callbacks allow the application programmer to change the contents of a
shell before it is mapped or after it is unmapped. The required
argument list for each of these callbacks is shown below.